package com.icinfo.cloud.provider.punish.config.service;

import com.icinfo.cloud.common.core.page.PageResponse;
import com.icinfo.cloud.provider.common.service.PunishBaseService;
import com.icinfo.cloud.provider.punish.config.dto.*;
import com.icinfo.cloud.provider.punish.config.vo.ConfigOrgRegulatoryDiscretionDetailVo;
import com.icinfo.cloud.provider.punish.config.vo.ConfigOrgRegulatoryDiscretionPageVo;
import com.icinfo.cloud.provider.punish.config.vo.ConfigOrgRegulatoryDiscretionRuleVo;

import java.util.List;


/**
 *
 * @author HKxxx
 * @date 2024/1/31 15:21
 */
public interface IConfigOrgRegulatoryDiscretionService extends PunishBaseService {

    /**
     * 分页获取自由裁量配置数据
     *
     * @param dto
     * @return
     */
    PageResponse<ConfigOrgRegulatoryDiscretionPageVo> regulatoryDiscretionPage(ConfigOrgRegulatoryDiscretionPageDto dto);


    /**
     * 保存自由裁量信息
     * @param dto
     */
    void save(ConfigOrgRegulatoryDiscretionSaveDto dto);

    /**
     * 根据事项catalogId获取详情
     *
     * @param regulatoryCatalogId 事项catalogId
     * @return
     */
    ConfigOrgRegulatoryDiscretionDetailVo detail(String regulatoryCatalogId);


    /**
     * 当前部门事项选择启用标准
     * @param dto
     */
    void chooseDiscretionType(RegulatoryChooseDiscretionTypeDto dto);

    /**
     * 根据案由和当事人信息查询违法情形列表
     *
     * @param dto
     * @return
     */
    List<ConfigOrgRegulatoryDiscretionRuleVo> getRuleListByCaseReasonAndParty(DiscretionRuleListByCaseReasonAndPartyDto dto);

    /**
     * 获取合并违法情形，通过案件id，只有多当事人单案由才会调用该接口
     *
     * @param dto
     * @return
     */
    List<ConfigOrgRegulatoryDiscretionRuleVo> getMergeRuleListByCase(DiscretionRuleListByCaseDto dto);

    /**
     * 根据事项catalogId和当事人类型查询违法情形列表
     *
     * @param dto
     * @return
     */
    List<ConfigOrgRegulatoryDiscretionRuleVo> getRuleListByRegulatoryAndParty(DiscretionRuleListByRegulatoryAndPartyDto dto);

    /**
     * 根据busId和当事人类型查询违法情形列表
     * @param dto
     * @return
     */
    List<ConfigOrgRegulatoryDiscretionRuleVo> getRuleListByBusIdAndParty(DiscretionRuleListByBusIdAndPartyDto dto);

    /**
     * 根据自由裁量配置id 刷新修改信息
     *
     * @param id 自由裁量配置id
     */
    void refreshUpdateInfo(String id);
}
